package com.version1.diabeco.ui.ajustes.medicamento;

import java.util.List;

import com.version1.diabeco.R;
import com.version1.diabeco.data.ajustes.medicamentos.MedicamentoDaoImpl;
import com.version1.diabeco.model.ajustes.medicamento.Medicamento;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;


public class ActivityListaRegistrosMedicamento extends Activity {
	public static final String INTENT_VALUE_MEDICAMENTO = "Medicamento";
	private List<Medicamento> medicamento;
	private ListView listaMedicamento;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_lista_registros_medicamento);
		
		//Elementos de la pantalla
		listaMedicamento = (ListView) findViewById(R.id.listViewMedicamento);
		
		this.inicializarListaMedicamentos();		
	}

//	@Override
//	public boolean onCreateOptionsMenu(Menu menu) {
//		// Inflate the menu; this adds items to the action bar if it is present.
//		getMenuInflater().inflate(R.menu.activity_lista_registros_medicamento,menu);
//		return true;
//	}
	
	@Override
	public void onResume() {
		super.onResume(); // Always call the superclass method first

		this.inicializarListaMedicamentos();
	}
	
	
	/** Se llama al hacer click en "Agregar Medicamento" */
	public void AgregarMedicamento(View view) {
		// Creamos el Intent
		Intent intent = new Intent(this, ActivityRegistroMedicamento.class);
		// Iniciamos la nueva actividad
		intent.putExtra(INTENT_VALUE_MEDICAMENTO, new Medicamento());
		startActivity(intent);
	}	
	
	
	private void inicializarListaMedicamentos() {

		this.setListaMedicamento(MedicamentoDaoImpl.getInstance(this).selectAll());

		List<Medicamento> medicamento = this.getListaMedicamento();

		if (!medicamento.isEmpty()) {

			ArrayAdapter<Medicamento> medicamentoAdapter = new MedicamentoAdapter(this, R.layout.activity_medicamento_fila ,medicamento);
			
			listaMedicamento.setAdapter(medicamentoAdapter);

			listaMedicamento.setOnItemClickListener(new OnItemClickListener() {
	
				@Override
				public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) {
	
					// Obtenemos los datos seleccionados y llamamos a la siguiente actividad
					modificarMedicamento(posicion);
				}
			});

			listaMedicamento.setOnItemLongClickListener(new OnItemLongClickListener() {
				@Override
				public boolean onItemLongClick(AdapterView<?> pariente, View view, int posicion, long id) {
	
					// Mostramos el menu contextual y ejecutamos la accion
					dialogMenuContextual(R.string.menu_contextual, R.array.lb_menu_contextual, posicion);
	
					return true;
				}
			});
		}		
	}

	
	public void modificarMedicamento(int pos) {

//		ListView listaMedicamento = (ListView) findViewById(R.id.listViewMedicamento);
		Medicamento medicamento = (Medicamento) (listaMedicamento.getItemAtPosition(pos));

		if (medicamento != null) {
			// Creamos el Intent
			Intent intent = new Intent(this, ActivityRegistroMedicamento.class);
			// Cargamos el Intent
			intent.putExtra(INTENT_VALUE_MEDICAMENTO, medicamento);
			// Iniciamos la nueva actividad
			startActivity(intent);
		}
	}
	
	
	/** PopUp para Mostrar una lista de valores **/
	public void dialogMenuContextual(int title, int list, final int pos) {

		AlertDialog popup;
		AlertDialog.Builder builder = new AlertDialog.Builder(this);

		builder.setCancelable(true);
		builder.setTitle(title);
		builder.setIcon(android.R.drawable.ic_menu_more);
		builder.setItems(list, new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int selectedItem) {

				mostrarMensajeConfirmacion(pos);
				dialog.cancel();
			}
		});

		// Cremos el PopUp y lo mostramos
		popup = builder.create();
		popup.show();
	}

	/** PopUp para Mostrar una lista de valores **/
	public void mostrarMensajeConfirmacion(final int pos) {
		
	AlertDialog popup;
	AlertDialog.Builder builder = new AlertDialog.Builder(this);
	 
    builder.setTitle(R.string.titulo_confimacion);
    builder.setMessage(R.string.pregunta_confirmacion);
    builder.setIcon(android.R.drawable.ic_dialog_alert);
    
    	//Boton Aceptar
    	builder.setPositiveButton(R.string.btn_aceptar, new DialogInterface.OnClickListener() {

    		public void onClick(DialogInterface dialog, int position) {
    	    	
    			ListView listaMedicamento = (ListView) findViewById(R.id.listViewMedicamento);
    			Medicamento medicamento = (Medicamento) (listaMedicamento.getItemAtPosition(pos));
    			
    			ArrayAdapter<Medicamento> medicamentoAdapter = (ArrayAdapter<Medicamento>) listaMedicamento.getAdapter();
    			
    			MedicamentoDaoImpl.getInstance(ActivityListaRegistrosMedicamento.this).deleteById(medicamento.getId());
    			getListaMedicamento().remove(medicamento);
            	
    			medicamentoAdapter.notifyDataSetChanged();

    			Toast.makeText(ActivityListaRegistrosMedicamento.this, "Medicamento Borrado", Toast.LENGTH_SHORT).show();

    	        dialog.cancel();
    	    	}
        	});

    	//Boton Cancelar    
	    builder.setNegativeButton(R.string.btn_cancelar, new DialogInterface.OnClickListener() {
	    public void onClick(DialogInterface dialog, int which) {
		        dialog.cancel();
	    }
	    });
 
    //Cremos el PopUp y lo mostramos
	popup = builder.create();
	popup.show();		
	}	
	

	public List<Medicamento> getListaMedicamento() {
		return medicamento;
	}

	
	public void setListaMedicamento(List<Medicamento> medicamento) {
		this.medicamento = medicamento;
	}
}
